package jdbc;

import clases.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class EquipoJDBC {
    public static ArrayList obtenerTodosEquipos(){
        ArrayList<Equipo>lista = new ArrayList<Equipo>();
        String sql = "select * from equipo order by puntos, numGoles, nombre";
        //System.out.println(sql);
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next()){
                Equipo equipo = new Equipo();
                equipo.setIdEquipo(rs.getInt("idEquipo"));
                equipo.setNombre(rs.getString("nombre"));
                equipo.setPartidosGanado(rs.getInt("partidosGanado"));
                equipo.setPartidosPerdido(rs.getInt("partidosPerdidos"));
                equipo.setPartidosEmpatado(rs.getInt("partidosEmpatado"));
                equipo.setPartidosJugados(equipo.getPartidosGanado() + equipo.getPartidosPerdido() + equipo.getPartidosEmpatado());
                equipo.setPuntos(rs.getInt("puntos"));
                equipo.setNumGoles(rs.getInt("numGoles"));
                equipo.setGolesEncajados(rs.getInt("golesEncajados"));
                equipo.setGolesCasa(rs.getInt("golesCasa"));
                equipo.setGolesFuera(rs.getInt("golesFuera"));
                equipo.setDiferenciaGoles(equipo.getNumGoles()-equipo.getGolesEncajados());
                lista.add(equipo);
            }
        }
        catch(Exception e){
            System.out.println("Error al obtener los equipos "+e.getMessage());
        }

        return lista;
    }

    public static Equipo obtenerEquipoPorId(String nombreEquipo, Connection con){
        String sql = "select * from equipo where nombre = '"+nombreEquipo+"' ";
        Equipo equipo = new Equipo();
        Statement st = null;
        ResultSet rs = null;

        try{
            st = con.createStatement();
            rs = st.executeQuery(sql);
            if(rs.next()){
                equipo.setIdEquipo(rs.getInt("idEquipo"));
                equipo.setNombre(nombreEquipo);
                equipo.setPartidosGanado(rs.getInt("partidosGanado"));
                equipo.setPartidosPerdido(rs.getInt("partidosPerdidos"));
                equipo.setPartidosEmpatado(rs.getInt("partidosEmpatado"));
                equipo.setPartidosJugados(equipo.getPartidosGanado() + equipo.getPartidosPerdido() + equipo.getPartidosEmpatado());
                equipo.setPuntos(rs.getInt("puntos"));
                equipo.setNumGoles(rs.getInt("numGoles"));
                equipo.setGolesEncajados(rs.getInt("golesEncajados"));
                equipo.setGolesCasa(rs.getInt("golesCasa"));
                equipo.setGolesFuera(rs.getInt("golesFuera"));
                equipo.setDiferenciaGoles(equipo.getNumGoles()-equipo.getGolesEncajados());
            }
            rs.close();
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al obtener una equipo por su identificador "+e.getMessage());
        }
        return equipo;
    }

    public static void actulizarPuntos(Equipo equipo){
        String sql = "update equipo set puntos = "+equipo.getPuntos()+" where idEquipo = "+equipo.getIdEquipo();
        System.out.println(sql);

        Connection con = null;
        Statement st = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.execute(sql);
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al actualizar los puntos del equipo "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }

    }


    public static void actualizarGolesCasa(Equipo equipo){
        String sql = "update equipo set golesCasa = "+equipo.getGolesCasa();
        sql += " where idEquipo = "+equipo.getIdEquipo();
        System.out.println(sql);


        Connection con = null;
        Statement st = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.execute(sql);
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al actualizar los goles marcados en casa "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
    }

    public static void actualizarGolesFuera(Equipo equipo){
        String sql = "update equipo set golesFuera = "+equipo.getGolesFuera();
        sql += " where idEquipo = "+equipo.getIdEquipo();
        //System.out.println(sql);


        Connection con = null;
        Statement st = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.execute(sql);
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al actualizar los goles marcados en fuera de casa "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
    }

    public static void actualizarGolesEncajados(Equipo equipo){
        String sql = "update equipo set golesEncajados = "+equipo.getGolesEncajados();
        sql += " where idEquipo = "+equipo.getIdEquipo();
        System.out.println(sql);

        Connection con = null;
        Statement st = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.execute(sql);
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al actualizar los goles encajados "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
    }
}
